home *** CD-ROM | disk | FTP | other *** search
- section lame,code_c
-
- >EXTERN"df0:PLANE",$60000
-
- ;PLANE 320x256x4
-
-
- Trap_vec0 = $80
- Execbase = $4
- Oldopen = -$198
- Intenar = $01c
- Intena = $09a
- Dmaconr = $002
- Dmacon = $096
- Cop1lch = $080
- Copjmp1 = $088
- Vposr = $004
-
- Move.l #Start,$80.w ; Trap vector 0
- Trap #0 ; Execute trap 0 to give full control of the
- Rts ; 68000, needs an RTE to return.
-
- Start:
- bsr KillSys
- bsr colint
- bsr main
- bsr setupsys
-
- Rte ; Return from exception
-
-
- *****************************************************************************
- ;Killsys - Disable operating system and interrupts
- *****************************************************************************
- Killsys:
- Move.l $4.w,a6 ; Execbase vector
- Lea Gfxname(pc),a1 ; Pointer to "graphics.library" into a1
- Jsr Oldopen(a6) ; Open this library
- Lea $dff000,a6 ; Pointer to custom chips
- Move.l d0,a0 ; Address of the graphics library
- Move.l 38(a0),Sys_copl ; Remember the System copperlist
- Move Intenar(a6),Int_set ; System interrupts
- Move #$7fff,Intena(a6) ; Now switch off all interrupts
- Move.l $6c.w,Vbl_vec ; System vertical blanking int.
- Move Dmaconr(a6),Dma_set ; System DMA
- Move #$7fff,Dmacon(a6) ; Clear all DMA
- Move #$87c0,Dmacon(a6) ; Now set the required DMA channels
-
- Move.l #COP,Cop1lch(a6) ; Init. our own copperlist
- Clr Copjmp1(a6)
-
- Rts
-
- Gfxname: dc.b "graphics.library",0
- Even
- *****************************************************************************
- ;Sysreturn - Re-enable operating system and interrupts
- *****************************************************************************
- Setupsys:
- Lea $dff000,a6
- Move #$7fff,Intena(a6) ; Clear all interrupts
- Move.l Vbl_vec,$6c.w ; Restore VBL interrupt
- Move Int_set,d0
- Or #$c000,d0
- Move d0,Intena(a6) ; Restore system interrupts
- Move #$7fff,Dmacon(a6)
- Move Dma_set,d0
- Or #$8200,d0
- Move d0,Dmacon(a6) ; Restore system DMA
- Move.l Sys_copl,Cop1lch(a6) ; Restore system copperlist
- Clr Copjmp1(a6)
- Rts
-
- Vbl_vec: dc.l 0
- Int_set: dc.l 0
- Dma_set: dc.l 0
- Sys_copl: dc.l 0
-
-
- Main:
- Move.l Vposr(a6),d0
- And.l #$1ff00,d0
- Cmp.l #$00100,d0 ; Wait for vertical position 1
- Bne.s Main
-
- BSR M316
- BSR M588
- BSR FF
-
- ; ROUTINE ;
-
- Btst #6,$bfe001 ; Check the left mouse button
- Bne.s Main
-
- Rts
-
- COPP: dc.L PLASMACOP
- COP2: dc.L PLASMACOP2
-
- M316: MOVE.L COP2,D0
- MOVE.L COPP,COP2
- MOVE.L D0,COPP
- SUB.L #PLASMACOP-COP,D0
- MOVE.L D0,$DFF080
-
- MOVE.L #$00420042,$60(A6)
- MOVE.L #$FFFFFFFF,$44(A6)
- MOVE.L #$00000042,$64(A6)
- MOVE.W #$2D01,D6
- MOVE.L COPP(PC),A0
- ADD.L #10,A0
- MOVE.L INV+4(PC),A1
- MOVE.L INV+72(PC),A2
- MOVE.L DEV+4(PC),A3
- BSR BLIT
- ADDQ.L #4,A0
- MOVE.L INV+8(PC),A1
- MOVE.L INV+76(PC),A2
- MOVE.L DEV+8(PC),A3
- BSR BLIT
- ADDQ.L #4,A0
- MOVE.L INV+12(PC),A1
- MOVE.L INV+80(PC),A2
- MOVE.L DEV+12(PC),A3
- BSR BLIT
- ADDQ.L #4,A0
- MOVE.L INV+16(PC),A1
- MOVE.L INV+84(PC),A2
- MOVE.L DEV+16(PC),A3
- BSR BLIT
- ADDQ.L #4,A0
- MOVE.L INV+20(PC),A1
- MOVE.L INV+88(PC),A2
- MOVE.L DEV+20(PC),A3
- BSR BLIT
- ADDQ.L #4,A0
- MOVE.L INV+24(PC),A1
- MOVE.L INV+92(PC),A2
- MOVE.L DEV+24(PC),A3
- BSR BLIT
- ADDQ.L #4,A0
- MOVE.L INV+28(PC),A1
- MOVE.L INV+96(PC),A2
- MOVE.L DEV+28(PC),A3
- BSR BLIT
- ADDQ.L #4,A0
- MOVE.L INV+32(PC),A1
- MOVE.L INV+100(PC),A2
- MOVE.L DEV+32(PC),A3
- BSR BLIT
- ADDQ.L #4,A0
- MOVE.L INV+36(PC),A1
- MOVE.L INV+104(PC),A2
- MOVE.L DEV+36(PC),A3
- BSR BLIT
- ADDQ.L #4,A0
- MOVE.L INV+40(PC),A1
- MOVE.L INV+108(PC),A2
- MOVE.L DEV+40(PC),A3
- BSR BLIT
- ADDQ.L #4,A0
- MOVE.L INV+44(PC),A1
- MOVE.L INV+112(PC),A2
- MOVE.L DEV+44(PC),A3
- BSR BLIT
- ADDQ.L #4,A0
- MOVE.L INV+48(PC),A1
- MOVE.L INV+116(PC),A2
- MOVE.L DEV+48(PC),A3
- BSR BLIT
- ADDQ.L #4,A0
- MOVE.L INV+52(PC),A1
- MOVE.L INV+120(PC),A2
- MOVE.L INV+52(PC),A3
- BSR BLIT
- ADDQ.L #4,A0
- MOVE.L INV+56(PC),A1
- MOVE.L INV+124(PC),A2
- MOVE.L DEV+56(PC),A3
- BSR BLIT
- MOVE.L COPP(PC),A0
- ADDQ.L #6,A0
- MOVE.L INV(PC),A1
- MOVE.L INV+68(PC),A2
- MOVE.L DEV(PC),A3
- BSR BLIT
- MOVEQ #0,D0
- RTS
-
- BLIT: BTST #14,$00DFF002 ;ok
- BNE BLIT
- MOVE.L A1,$50(A6)
- MOVE.L A0,$54(A6)
- MOVE.L #$09F00000,$40(A6)
- MOVE.W D6,$58(A6)
- BLIT2: BTST #14,$00DFF002
- BNE BLIT2
- MOVE.L A0,$48(A6)
- MOVE.L A2,$50(A6)
- MOVE.L A0,$54(A6)
- MOVE.L #$0B5A0000,$40(A6)
- MOVE.W D6,$58(A6)
- BLIT3: BTST #14,$00DFF002
- BNE BLIT3
- MOVE.L A0,$48(A6)
- MOVE.L A3,$50(A6)
- MOVE.L A0,$54(A6)
- MOVE.L #$0B5A0000,$40(A6)
- MOVE.W D6,$58(A6)
- RTS
-
- M588: MOVE.B SPEED1(PC),D0
- MOVE.L SINPOINTER1(PC),D1
- ADD.L D0,D1
- AND.L #$FF,D1
- MOVE.L D1,SINPOINTER1
- LEA SINUS+$200(PC),A0
- ADD.L D1,A0
- MOVEQ #0,D0
- MOVEQ #0,D1
- MOVE.L #COLL1,D2
- LEA INV(PC),A1
- MOVE.W #14,D7
- lb386: MOVE.L D2,(A1)
- MOVE.B (A0),D0
- ADD.W D0,D0
- ADD.L D0,(A1)+
- ADD.L #$10,A0 ;SCHRITTWEITE *2
- DBRA D7,lb386
- MOVE.B SPEED2(PC),D0
- MOVE.L SINPOINTER2(PC),D1
- ADD.L D0,D1
- AND.L #$FF,D1
- MOVE.L D1,SINPOINTER2
- LEA SINUS+$200(PC),A0
- ADD.L D1,A0
- MOVEQ #0,D0
- MOVEQ #0,D1
- MOVE.L #COLL2,D2
- LEA INV+68(PC),A1
- MOVE.W #14,D7
- lb3E8: MOVE.L D2,(A1)
- MOVE.B (A0),D0
- ADD.W D0,D0
- ADD.L D0,(A1)+
- ADD.L #$0E,A0 ;SCHRITTWEITE *2
- DBRA D7,lb3E8
- MOVE.B SPEED3(PC),D0
- MOVE.L SINPOINTER3(PC),D1
- ADD.L D0,D1
- AND.L #$FF,D1
- MOVE.L D1,SINPOINTER3
- LEA SINUS+$200(PC),A0
- ADD.L D1,A0
- MOVEQ #0,D0
- MOVEQ #0,D1
- MOVE.L #COLL3,D2
- LEA DEV(PC),A1
- MOVE.W #14,D7
- lb44A: MOVE.L D2,(A1)
- MOVE.B (A0),D0
- ADD.W D0,D0
- ADD.L D0,(A1)+
- ADD.L #$0E,A0 ;SCHRITTEWEITE *2
- DBRA D7,lb44A
- RTS
-
-
-
- COLINT: LEA COLL1(PC),A1
- LEA COLL2(PC),A2
- LEA COLL3(PC),A3
- LEA COLTAB(PC),A0
- MOVEQ #$1D,D6
- WUF2: MOVEQ #$0B,D5
- WUF1: MOVE.W (A0),D0
- MOVE.W D0,(A3)+
- ROR.L #4,D0
- MOVE.W D0,(A2)+
- ROR.L #4,D0
- MOVE.W D0,(A1)+
- DBF D5,WUF1
- ADD.W #2,A0
- DBF D6,WUF2
-
- LEA PLASMACOP(PC),A0
- LEA PLASMACOP2(PC),A2
- MOVE.W #$B3,D7
- IN1: LEA COPYCOP(PC),A1
- MOVE.W #$10,D6
- IN2: MOVE.L (A1),(A0)+
- MOVE.L (A1)+,(A2)+
- DBF D6,IN2
- ADD.W #$0100,COPYCOP
- DBF D7,IN1
-
- RTS
-
-
-
- SPEED1: dc.B 2
- SPEED2: dc.B 1
- SPEED3: dc.B 2
- EVEN
-
- SINPOINTER1: dc.L 0
- SINPOINTER2: dc.L 0
- SINPOINTER3: dc.L 0
-
- COLTAB: dc.W $0100,$0200,$0300,$0400,$0500,$0600,$0700,$0800
- dc.W $0900,$0A00,$0B00,$0C00,$0D00,$0E00,$0F00,$0E00
- dc.W $0D00,$0C00,$0B00,$0A00,$0900,$0800,$0700,$0600
- dc.W $0500,$0400,$0300,$0200,$0100,$0000
-
- COPYCOP:
- dc.W $4707,$FFFE
- dc.W $0182,$0000,$0184,$0000,$0186,$0000,$0188,$0000
- dc.W $018A,$0000,$018C,$0000,$018E,$0000,$0190,$0000
- dc.W $0192,$0000,$0194,$0000,$0196,$0000,$0198,$0000
- dc.W $019A,$0000,$019C,$0000,$019E,$0000
- dc.W $0102,$0000
-
- COLL1: BLK.W $180,0
- COLL2: BLK.W $180,0
- COLL3: BLK.W $180,0
-
- INV: BLK.W 68,0
- DEV: BLK.W 64,0
-
-
-
- SINUS:
- dc.L $32333436,$3738393B,$3C3D3E3F,$41424344,$45464748,$4A4B4C4D
- dc.L $4E4F5051,$52535454,$55565758,$59595A5B,$5C5C5D5E,$5E5F5F60
- dc.L $60616161,$62626363,$63636364,$64646464,$64646464,$64646363
- dc.L $63636362,$62616161,$60605F5F,$5E5E5D5C,$5C5B5A59,$59585756
- dc.L $55545453,$5251504F,$4E4D4C4B,$4A484746,$45444342,$413F3E3D
- dc.L $3C3B3938,$37363433,$3231302E,$2D2C2B29,$28272625,$23222120
- dc.L $1F1E1D1C,$1A191817,$16151413,$12111010,$0F0E0D0C,$0B0B0A09
- dc.L $08080706,$06050504,$04030303,$02020101,$01010100,$00000000
- dc.L $00000000,$00000101,$01010102,$02030303,$04040505,$06060708
- dc.L $08090A0B,$0B0C0D0E,$0F101011,$12131415,$16171819,$1A1C1D1E
- dc.L $1F202122,$23252627,$28292B2C,$2D2E3031,$32333436,$3738393B
- dc.L $3C3D3E3F,$41424344,$45464748,$4A4B4C4D,$4E4F5051,$52535454
- dc.L $55565758,$59595A5B,$5C5C5D5E,$5E5F5F60,$60616161,$62626363
- dc.L $63636364,$64646464,$64646464,$64646363,$63636362,$62616161
- dc.L $60605F5F,$5E5E5D5C,$5C5B5A59,$59585756,$55545453,$5251504F
- dc.L $4E4D4C4B,$4A484746,$45444342,$413F3E3D,$3C3B3938,$37363433
- dc.L $3231302E,$2D2C2B29,$28272625,$23222120,$1F1E1D1C,$1A191817
- dc.L $16151413,$12111010,$0F0E0D0C,$0B0B0A09,$08080706,$06050504
- dc.L $04030303,$02020101,$01010100,$00000000,$00000000,$00000101
- dc.L $01010102,$02030303,$04040505,$06060708,$08090A0B,$0B0C0D0E
- dc.L $0F101011,$12131415,$16171819,$1A1C1D1E,$1F202122,$23252627
- dc.L $28292B2C,$2D2E3031,$32333436,$3738393B,$3C3D3E3F,$41424344
- dc.L $45464748,$4A4B4C4D,$4E4F5051,$52535454,$55565758,$59595A5B
- dc.L $5C5C5D5E,$5E5F5F60,$60616161,$62626363,$63636364,$64646464
- dc.L $64646464,$64646363,$63636362,$62616161,$60605F5F,$5E5E5D5C
- dc.L $5C5B5A59,$59585756,$55545453,$5251504F,$4E4D4C4B,$4A484746
- dc.L $45444342,$413F3E3D,$3C3B3938,$37363433,$3231302E,$2D2C2B29
- dc.L $28272625,$23222120,$1F1E1D1C,$1A191817,$16151413,$12111010
- dc.L $0F0E0D0C,$0B0B0A09,$08080706,$06050504,$04030303,$02020101
- dc.L $01010100,$00000000,$00000000,$00000101,$01010102,$02030303
- dc.L $04040505,$06060708,$08090A0B,$0B0C0D0E,$0F101011,$12131415
- dc.L $16171819,$1A1C1D1E,$1F202122,$23252627,$28292B2C,$2D2E3031
- dc.L $32333436,$3738393B,$3C3D3E3F,$41424344,$45464748,$4A4B4C4D
- dc.L $4E4F5051,$52535454,$55565758,$59595A5B,$5C5C5D5E,$5E5F5F60
- dc.L $60616161,$62626363,$63636364,$64646464,$64646464,$64646363
- dc.L $63636362,$62616161,$60605F5F,$5E5E5D5C,$5C5B5A59,$59585756
- dc.L $55545453,$5251504F,$4E4D4C4B,$4A484746,$45444342,$413F3E3D
- dc.L $3C3B3938,$37363433,$3231302E,$2D2C2B29,$28272625,$23222120
- dc.L $1F1E1D1C,$1A191817,$16151413,$12111010,$0F0E0D0C,$0B0B0A09
- dc.L $08080706,$06050504,$04030303,$02020101,$01010100,$00000000
- dc.L $00000000,$00000101,$01010102,$02030303,$04040505,$06060708
- dc.L $08090A0B,$0B0C0D0E,$0F101011,$12131415,$16171819,$1A1C1D1E
- dc.L $1F202122,$23252627,$28292B2C,$2D2E3031
-
- COP: dc.W $008E,$3681,$0090,$FFC1,$0092,$0038,$0094,$00D0
- dc.W $0100,$0200
- dc.W $0180,$0000,$0102,$0000,$0108,$0000
- dc.W $0104,$0000
- PL0: dc.W $00E0,$0006,$00E2,$0000,$00E4,$0006,$00E6,$0028
- dc.W $00E8,$0006,$00EA,$0050,$00EC,$0006,$00EE,$0078
- dc.W $0108,$0078,$010A,$0078
- dc.W $4701,$FFFE
- dc.W $0100,$4200
- PLASMACOP:
- BLK.W 6120,0
-
- dc.W $FF19,$FFFE,$0100,$0200
- dc.W $0180,$0000
- dc.W $FFFF,$FFFE
-
- COPSEC: dc.W $008E,$3681,$0090,$FFC1,$0092,$0038,$0094,$00D0
- dc.W $0100,$0200
- dc.W $0180,$0000,$0102,$0000,$0108,$0000
- dc.W $0104,$0000
- PL1: dc.W $00E0,$0006,$00E2,$0000,$00E4,$0006,$00E6,$0028
- dc.W $00E8,$0006,$00EA,$0050,$00EC,$0006,$00EE,$0078
- dc.W $0108,$0078,$010A,$0078
- dc.W $4701,$FFFE
- dc.W $0100,$4200
- PLASMACOP2:
- BLK.W 6120,0
-
- dc.W $FF19,$FFFE,$0100,$0200
- dc.W $0180,$0000
- dc.W $FFFF,$FFFE
-
- FLAG: dc.W 0
- COUNTER: dc.W 3
- FF:
- SUB.W #1,COUNTER
- BNE RAUS
- MOVE.W #3,COUNTER
-
- LEA PL1,A0
- LEA PL0,A1
-
- BTST #0,FLAG
- BEQ SUBI
- CMP.W #$A0*70,6(A0)
- BNE GOGO2
- BCHG #0,FLAG
- RTS
- GOGO2:
- ADD.W #$A0,6(A0)
- ADD.W #$A0,14(A0)
- ADD.W #$A0,22(A0)
- ADD.W #$A0,30(A0)
-
- ADD.W #$A0,6(A1)
- ADD.W #$A0,14(A1)
- ADD.W #$A0,22(A1)
- ADD.W #$A0,30(A1)
- RAUS:
- RTS
-
- SUBI:
- CMP.W #0,6(A0)
- BNE GOGO
- BCHG #0,FLAG
- RTS
- GOGO:
- SUB.W #$A0,6(A0)
- SUB.W #$A0,14(A0)
- SUB.W #$A0,22(A0)
- SUB.W #$A0,30(A0)
-
- SUB.W #$A0,6(A1)
- SUB.W #$A0,14(A1)
- SUB.W #$A0,22(A1)
- SUB.W #$A0,30(A1)
- RTS
-